package club.baimahu.pencil.domain.entity.account;

import java.math.BigDecimal;

/**
 * 账户管理器,对"钱包"的一个抽象
 */
public interface AccountManager {

    /**
     * 付款给对方账户
     * @param money  金额
     * @param account  对方账户
     * @return
     */
    boolean pay(BigDecimal money, Account account);

    /**
     * 付给账户Manager
     * @param money
     * @param accountManager
     * @return
     */
    boolean pay(BigDecimal money, AccountManager accountManager);

    /**
     * 从对方账户收款
     * @param bigDecimal  金额
     * @param account  对方账户
     * @return
     */
    boolean income(BigDecimal bigDecimal, Account account);

    boolean income(BigDecimal bigDecimal, AccountManager accountManager);

    Account getIncomeAccount();

    Account getPayAccount();

    /**
     * 增加账号
     * @param account
     */
    void addAccount(Account account);

    String accountManagerName();

    /**
     * 账户总资产
     * @return
     */
    BigDecimal getBalance();
}
